看console
<script>
    // 创建一个Promise对象
    // - 在JavaScript的Promise构造函数中，(resolve, reject)是两个函数参数，它们由Promise构造函数本身提供，并作为回调函数的参数传递给执行器（executor）函数。执行器函数是Promise构造函数接收的唯一参数，它是一个在Promise对象创建时立即被调用的函数。
    // - resolve 函数：当异步操作成功完成时，我们调用 resolve 函数，并将操作的结果作为参数传递给它。这会导致Promise对象的状态从“pending”（待定）变为“fulfilled”（已兑现），并且所有注册在 .then() 方法中的成功回调都会被调用，接收 resolve 函数传递的结果值。
    // - reject 函数：当异步操作失败时，我们调用 reject 函数，并将错误信息（或错误对象）作为参数传递给它。这会导致Promise对象的状态从“pending”变为“rejected”（已拒绝），并且所有注册在 .catch() 方法（或 .then() 方法的第二个参数）中的失败回调都会被调用，接收 reject 函数传递的错误信息。
    const myPromise = new Promise((resolve, reject) => {
        // 模拟一个异步操作，例如从服务器获取数据
        setTimeout(() => {
            const success = true; // 这里可以模拟成功或失败的条件

            if (success) {
                // 如果操作成功，调用resolve函数并传递结果给后续的then中的第一个回调函数的入参
                resolve("Data fetched successfully!");
            } else {
                // 如果操作失败，调用reject函数并传递错误信息给then中的第二个回调函数的入参
                reject("Failed to fetch data.");
            }
        }, 2000);
    });

    myPromise.then(
        (result) => {// 这个回调函数会在Promise成功时被调用，result就是上文resolve的入参
            console.log("Success:", result);
        }, (error) => {// 这个回调函数会在Promise失败时被调用，result就是上文reject的入参
            console.error("Error:", error);
        }
    );


    // 你也可以使用.catch()方法来专门处理错误，而不需要在.then()中提供第二个回调函数
    // myPromise
    //     .then((result) => {
    //         console.log("Success:", result);
    //     })
    //     .catch((error) => {
    //         console.error("Error:", error);
    //     });

    // 注意：在最新的JavaScript版本中，推荐使用async/await语法来处理异步操作，它可以使代码更加简洁和易于理解。
    // 下面是一个使用async/await的示例：

    async function fetchData() {
        try {
            // 使用await关键字等待Promise解决，并获取结果。
            // - await的含义是：等待返回值。那么变量接收到的也就是这个函数对象对应的返回值，而不是这个对象本身。
            const result = await myPromise;
            // 上面如果不加await这里打印出来的是Promise对象，而不是字符串
            // 上面如果加了await这里打印处理的就是代表返回值的字符串，即上文resolve的入参
            console.log("Success2:", result);
        } catch (error) {
            // 如果Promise被拒绝，错误会被抛出到catch块中
            console.error("Error2:", error);
        }
    }

    // 调用async函数
    fetchData();
</script>